package wangwenjun.phase2.concurrencypattern.eventrouter.demo03.framework;

/**
 * @author ChangLiang
 * @date 2020/6/20
 */
interface IRouter<E extends Message> {

    /**
     * 针对每一种Message 类型注册相关的Channel ， 只有找到合适的Channel 该Message 才会被处理
     * @param messageType
     * @param channel
     */
    void registerChannel(Class<? extends E> messageType, Channel<? extends E> channel);

    /**
     * 为相应的Channel 分配Message
     * @param message
     */
    void dispatch(E message);
}
